/**
 * 
 */
package com.shifan.phone.service.impl;

import java.util.HashMap;
import java.util.List;
import java.util.Map;

import javax.annotation.Resource;

import org.springframework.stereotype.Service;

import com.shifan.phone.common.Tools;
import com.shifan.phone.dao.ProductImageModelMapper;
import com.shifan.phone.dao.ProductModelMapper;
import com.shifan.phone.model.ProductImageModel;
import com.shifan.phone.model.ProductModel;
import com.shifan.phone.service.ProductModelService;

/**
 * 产品Service实现类
 * @author TangLei
 * @date 2018年12月5日 上午10:01:23
 * @version 1.0
 */
@Service
public class ProductModelServiceImpl implements ProductModelService{
	//注入产品Dao接口
	@Resource
	ProductModelMapper productModelDao;
	
	//注入产品图片Dao接口
	@Resource
	ProductImageModelMapper productImageModelDao;
	
	/**
	 * 根据产品ID删除产品信息
	 * @param proId 产品ID
	 * @return 影响的行数
	 */
	@Override
	public int deleteByPrimaryKey(String proId) {
		// 调用产品Dao接口里面的删除的方法
		return productModelDao.deleteByPrimaryKey(proId);
	}

	/**
     * 增加产品信息（一次性增加所有字段）
     * @param record 产品对象
     * @return 影响的行数
     */
	@Override
	public int insert(ProductModel record) {
		//得到一个随机数
		String proId = Tools.getRandomString();
		//给产品Id赋值
		record.setProId(proId);
		//给产品是否有效赋值1、未上架 2、上架 0、下架
		record.setIsva(1);
		// 调用产品Dao接口里面的增加的方法
		return productModelDao.insert(record);
	}

	/**
     * 增加产品信息（增加一个或多个字段）
     * @param record 产品对象
     * @return 影响的行数
     */
	@Override
	public int insertSelective(ProductModel record) {
		//得到一个随机数
		String proId = Tools.getRandomString();
		//给产品Id赋值
		record.setProId(proId);
		//给产品是否有效赋值1、未上架 2、上架 0、下架
		record.setIsva(1);
		// 调用产品Dao接口里面的增加的方法
		return productModelDao.insertSelective(record);
	}

	/**
     * 根据产品ID查询产品信息
     * @param proId 产品ID
     * @return 产品对象
     */
	@Override
	public ProductModel selectByPrimaryKey(String proId) {
		// 调用产品Dao接口里面的根据ID查询的方法
		ProductModel product = productModelDao.selectByPrimaryKey(proId);
		//创建一个产品图片对象
		ProductImageModel productImage = new ProductImageModel();
		//给图片对象的产品ID赋值
		productImage.setProId(proId);
		//给图片对象的图片类型赋值
		productImage.setImgType(1);
		//调用图片Dao接口的根据产品ID和产品类型查询的方法
		ProductImageModel productImages = productImageModelDao.findProIdAndType(productImage);
		//判断
		if(!Tools.isEmpty(productImages)){
			//给产品对象的图片地址赋值
			product.setImgPath(productImages.getImgPath());
		}
		//返回产品对象
		return product;
	}

	/**
     * 根据产品ID修改产品信息（可修改一个或多个字段）
     * @param record 产品对象
     * @return 影响的行数
     */
	@Override
	public int updateByPrimaryKeySelective(ProductModel record) {
		// 调用产品Dao接口里面的修改的方法
		return productModelDao.updateByPrimaryKeySelective(record);
	}

	/**
     * 产局产品ID修改产品信息（一次性修改所有字段）
     * @param record 产品对象
     * @return 影响的行数
     */
	@Override
	public int updateByPrimaryKey(ProductModel record) {
		// 调用产品Dao接口里面的修改的方法
		return productModelDao.updateByPrimaryKey(record);
	}

	/**
     * 查询所有产品信息（包括根据条件查询）
     * @param record 产品对象
     * @return map集合
     */
	@Override
	public Map<String,Object> findAll(ProductModel record) {
		//创建一个map集合
		Map<String,Object> map = new HashMap<String,Object>();
		// 调用产品Dao接口里面的查询所有的方法
		List<ProductModel> list = productModelDao.findAll(record);
		//遍历集合
		for(ProductModel product:list){
			//创建一个产品图片对象
			ProductImageModel productImage = new ProductImageModel();
			//给图片对象的产品ID赋值
			productImage.setProId(product.getProId());
			//给图片对象的图片类型赋值
			productImage.setImgType(1);
			//调用图片Dao接口的根据产品ID和产品类型查询的方法
			ProductImageModel productImages = productImageModelDao.findProIdAndType(productImage);
			//判断
			if(!Tools.isEmpty(productImages)){
				//给产品对象的图片地址赋值
				product.setImgPath(productImages.getImgPath());
			}
		}
		// 调用产品Dao接口里面的查询总行数的方法
		int count = productModelDao.findCount(record);
		//给map集合赋值
		map.put("code", 0);
		map.put("msg", "");
		map.put("count", count);
		map.put("data", list);
		//返回map集合
		return map;
	}
}
